package ioc

import "fmt"

var Controllers = map[string]IocObject{}

// 实例初始化流程 ---先由系统注册--再调用Init 进行 初始化
// 初始化所有实例
func InitController() error {
	for k, v := range Controllers {
		err := v.Init()
		if err != nil {
			return fmt.Errorf("init %s error:%s", k, err)
		}
	}
	return nil
}
func RegistryController(obj IocObject) {
	Controllers[obj.Name()] = obj
}

func ShowConntrollers() (names []string) {
	for k := range Controllers {
		names = append(names, k)
	}
	return
}

func GetController(name string) any {
	v, ok := Controllers[name]
	if !ok {
		panic("Controller Not Found %s")
	}
	return v
}
